System Call Interface (SCI) হলো একটি প্রোগ্রামিং ইন্টারফেস যা অপারেটিং সিস্টেমের কোর (kernel) এর সাথে ব্যবহারকারী প্রোগ্রামের যোগাযোগ নিশ্চিত করে। এটি অপারেটিং সিস্টেমের গুরুত্বপূর্ণ ফাংশনগুলো, যেমন ফাইল অপারেশন, প্রসেস ম্যানেজমেন্ট, এবং মেমোরি ম্যানেজমেন্ট পরিচালনা করতে ব্যবহার করা হয়। Linux এবং Windows অপারেটিং সিস্টেমের System Call Interface-এর কাঠামো এবং ব্যবহারের মধ্যে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে।
Linux System Call Interface সাধারণত Assembly Language বা উচ্চ-স্তরের ভাষা ব্যবহার করে প্রোগ্রামারের অ্যাপ্লিকেশন থেকে kernel ফাংশনগুলো কল করতে ব্যবহৃত হয়। Linux-এ system call ইন্টারফেস সাধারণত int 0x80
বা syscall
নির্দেশনা ব্যবহার করে কাজ করে।
প্রক্রিয়া:
eax
রেজিস্টারে লোড করা হয়।ebx
, ecx
, edx
, esi
, এবং edi
রেজিস্টারে লোড করা হয়।int 0x80
বা syscall
নির্দেশনা ব্যবহার করে system call কার্যকর করা হয়।Assembly উদাহরণ:
section .text
global _start
_start:
; sys_write সিস্টেম কল
mov eax, 4 ; sys_write এর সিস্টেম কল নম্বর (4)
mov ebx, 1 ; ফাইল ডিসক্রিপ্টর (stdout)
mov ecx, msg ; মেসেজের অ্যাড্রেস
mov edx, 13 ; মেসেজের দৈর্ঘ্য
int 0x80 ; সিস্টেম কল
; sys_exit সিস্টেম কল
mov eax, 1 ; sys_exit এর সিস্টেম কল নম্বর (1)
xor ebx, ebx ; এক্সিট কোড 0
int 0x80 ; সিস্টেম কল
section .data
msg db 'Hello, World!', 0
নতুন ইন্টারফেস (syscall):
syscall
নির্দেশনা ব্যবহার করা হয়, যা int 0x80
এর চেয়ে দ্রুত।rax
রেজিস্টারে এবং প্যারামিটারগুলো rdi
, rsi
, rdx
, r10
, r8
, এবং r9
রেজিস্টারে লোড করা হয়।Windows System Call Interface সাধারণত API (Application Programming Interface) ব্যবহার করে অ্যাপ্লিকেশন এবং kernel-এর মধ্যে যোগাযোগ স্থাপন করে। Windows-এ system call সরাসরি ব্যবহৃত হয় না; বরং, Windows API কলগুলো kernel32.dll বা ntdll.dll লাইব্রেরির মাধ্যমে kernel-mode ফাংশনে পৌঁছায়।
প্রক্রিয়া:
উদাহরণ:
C/C++-এ Windows API ব্যবহার করে system call:
#include <windows.h>
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}
নির্দেশনার কার্যপ্রণালী:
ntdll.dll
এর মাধ্যমে কাজ করে, যা kernel-level API ফাংশন, যেমন NtWriteFile
, NtCreateProcess
, ইত্যাদি ব্যবহৃত হয়।syscall
বা sysenter
নির্দেশনা ব্যবহার করা হয় যা kernel-mode এ সিস্টেম কল কার্যকর করে।বৈশিষ্ট্য | Linux | Windows |
---|---|---|
ইন্টারফেস পদ্ধতি | সরাসরি int 0x80 বা syscall ব্যবহার করে। | Windows API (kernel32.dll, ntdll.dll) মাধ্যমে। |
সিস্টেম কল নম্বর | নির্দিষ্ট রেজিস্টারে লোড করা হয় (eax , rax )। | সরাসরি ব্যবহার করা হয় না, API মাধ্যমে ম্যাপ হয়। |
কাস্টম সিস্টেম কল | ব্যবহারকারীরা প্রয়োজন হলে কাস্টম system call তৈরি করতে পারে। | সরাসরি সমর্থন নেই, তবে ড্রাইভার বা kernel-mode কোডের মাধ্যমে। |
ব্যবহার | সাধারণত অ্যাডভান্সড প্রোগ্রামার বা kernel-level প্রোগ্রামিংয়ে ব্যবহৃত। | সাধারণ অ্যাপ্লিকেশন প্রোগ্রামিংয়ে API ব্যবহৃত। |
আর্কিটেকচার | ওপেন সোর্স, পরিবর্তন করা যায়। | ক্লোজড সোর্স, Microsoft দ্বারা নিয়ন্ত্রিত। |
সারসংক্ষেপ
Linux এবং Windows উভয় অপারেটিং সিস্টেমেই System Call Interface ব্যবহার করা হয়, তবে তাদের পদ্ধতি ভিন্ন। Linux-এ সরাসরি int 0x80
বা syscall
ব্যবহার করা যায়, যেখানে Windows-এ API কল ব্যবহার করে kernel-mode ফাংশন কার্যকর করা হয়। Linux সিস্টেম কল পদ্ধতি সরাসরি এবং প্রোগ্রামার-কেন্দ্রিক, যেখানে Windows পদ্ধতি API-কেন্দ্রিক এবং সাধারণ ব্যবহারকারীদের জন্য সহজতর।
common.read_more